home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Wonky Flux Batch 2019 02
/
Wonky_Flux_Batch_2019-02.zip
/
Wonky Flux Batch 2019-02
/
074 - ProSEL 3.3.dsk
/
SUPRA.NEW.S
< prev
Wrap
Text File
|
2019-02-17
|
4KB
|
215 lines
********************************
* SupraModem Driver *
********************************
DSK SUPRA.MDM
DATAREG = $C088
STATREG = $C089
CMDREG = $C08A
CONREG = $C08B
STROBE = $C070
ORG $0E00
MDMSLOT DFB 2*16 ;Slot * 16
TRANRCV DFB $43 ;Reserved
SPCINIT DFB 0
BYCNT DFB 0,0,0 ;byte-counting
JMP MDMINIT ;Init modem
JMP MDMRSET ;Set to answer
JMP MDMRING ;Check for ring
JMP MDMANS ;Force answer
JMP MDMHANG ;Hang up modem
JMP MDMIN ;Get input data
JMP MDMOUT ;Send data
JMP MDMDCD ;Check for DCD
MDMINIT LDA #0
LDX MDMSLOT
STA STATREG,X
STA CMDREG,X
CLC
TXA
ADC #$88
STA OUT3+1
INITRTS RTS
MDMRSET LDX MDMSLOT
LDA #$00
STA CMDREG,X
LDA #$00
JSR DELAY
JSR DELAY
LDA #$0B
STA CMDREG,X
LDY CURRSPD
JSR SETSPD
LDA DATAREG,X ;clear RCV reg
LDX #$FF
MDMR1 INX
LDA STRINGS,X
BEQ MDMR2
JSR MDMOUT
JMP MDMR1
MDMR2 LDY #$FA
MDMR3 DEY
BEQ MDMRSET
LDA #$1E
JSR DELAY
JSR MDMIN
BCC MDMR3
AND #$7F
CMP #'K'
BNE MDMR3
LDA #$00
STA BYCNT
STA BYCNT+1
STA BYCNT+2
CLC
RTS
MDMHUH JMP MDMRSET
MDMRING JSR MDMIN
BCC RINGRTS
AND #$7F
TAY
LDA STATEMP
AND #$07
BNE MDMHUH ;if framing errors, reset modem
TYA
CMP #'E'
CLC
BNE RINGRTS
RING1 JSR MDMIN
BCC RING1
LDY #$00
AND #$7F
CMP #'R'
BEQ MDMHUH
CMP #$0D ;compare <CR>
BEQ RING2
CMP #'3'
BEQ RING2
INY
CMP #'1'
BEQ RING2
INY
CMP #'2'
BNE RING1
RING2 JSR SETSPD
LDY #$05
RING3 LDA #$00
JSR DELAY
DEY
BNE RING3
SEC
RINGRTS RTS
MDMANS LDX #$00
ANS1 LDA PICKUP,X
BEQ ANSRTS
JSR MDMOUT
INX
BNE ANS1
ANSRTS RTS
MDMHANG LDX MDMSLOT
LDA #$00
STA CMDREG,X
RTS
MDMIN STX TEMPX
LDX MDMSLOT
LDA STATREG,X
STA STATEMP
AND #$08
CLC
BEQ INRTS
LDA DATAREG,X
SEC
INRTS LDX TEMPX
RTS
MDMOUT STX TEMPX
DEC CCOUNT
BNE OUT1
INC BYCNT
BIT BYCNT
BVC OUT1
LDX #$00
STX BYCNT
INC BYCNT+1
BIT BYCNT+1
BVC OUT1
LDX #$00
STX BYCNT+1
INC BYCNT+2
OUT1 LDX MDMSLOT
PHA
OUT2 LDA STATREG,X
AND #$10
BEQ OUT2
PLA
OUT3 STA DATAREG
LDX TEMPX
RTS
MDMDCD STX TEMPX
PHA
LDX MDMSLOT
LDA STATREG,X
AND DCDMASK
CLC
BNE DCDRTS
SEC
DCDRTS PLA
LDX TEMPX
RTS
SETSPD STX TEMPX
LDX MDMSLOT
LDA SPDTBL,Y
STA CONREG,X
LDA #$01
STA SPCINIT
CPY #$00
BEQ SETRTS
ASL SPCINIT
SET1 ASL SPCINIT
DEY
BNE SET1
SETRTS LDX TEMPX
RTS
DELAY SEC
DEL2 PHA
DEL1 BIT STROBE
SBC #$01
BNE DEL1
PLA
SBC #$01
BNE DEL2
RTS
SPDTBL DFB $16,$18,$1A,$1C,$1E ;3,12,24,48,96 baud
STRINGS ASC 'ATX3S0=1&C1&D2S2=128L' ;first string
HEX 0D00
PICKUP ASC 'ATA' ;Pickup phone
HEX 0D00
DCDMASK DFB $40
CURRSPD DFB 2
CCOUNT DS 1
TEMPX DS 1
STATEMP DS 1